#ifndef RASTERIZER_SHADER_H
#define RASTERIZER_SHADER_H

#include <eigen3/Eigen/Eigen>
#include "Texture.hpp"

//片元
//在Rasterization之后，
//每一个payload记录者每一个像素可能对应的多个三角形片段之一
struct fragment_shader_payload{
    fragment_shader_payload(){
        texture = nullptr;
    }

    fragment_shader_payload(
        const Eigen::Vector3f& col, //颜色
        const Eigen::Vector3f& nor, //法线
        const Eigen::Vector2f& tc,  //纹理坐标
        Texture* tex                //纹理
    ) :
        color(col), normal(nor), tex_coords(tc), texture(tex) {}
      

    Eigen::Vector3f view_pos;
    Eigen::Vector3f color;
    Eigen::Vector3f normal;
    Eigen::Vector2f tex_coords;
    Texture* texture;
};

struct vertex_shader_payload{
    Eigen::Vector3f position;
    //存储变换后的顶点位置
};

#endif // RASTERIZER_SHADER_H